package com.ruoyi.system.domain.award.competition;

import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 竞赛获奖作品子对象 competition_award_works
 * 
 * @author ruoyi
 * @date 2025-07-28
 */
public class CompetitionAwardWorks extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 关联竞赛获奖主表ID */
    @Excel(name = "关联竞赛获奖主表ID")
    private Long awardInfoId;

    /** 作品名称 */
    @Excel(name = "作品名称")
    private String workName;

    /** 项目负责人姓名 */
    @Excel(name = "项目负责人姓名")
    private String leaderName;

    /** 项目负责人年级 */
    @Excel(name = "项目负责人年级")
    private String leaderGrade;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdDate;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedDate;

    // 嵌套的团队成员列表（子项的子项）
    private List<CompetitionAwardTeamMembers> teamMembers;

    // 嵌套的指导老师列表（子项的子项）
    private List<CompetitionAwardTeacher> teachers;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setAwardInfoId(Long awardInfoId) 
    {
        this.awardInfoId = awardInfoId;
    }

    public Long getAwardInfoId() 
    {
        return awardInfoId;
    }

    public void setWorkName(String workName) 
    {
        this.workName = workName;
    }

    public String getWorkName() 
    {
        return workName;
    }

    public void setLeaderName(String leaderName) 
    {
        this.leaderName = leaderName;
    }

    public String getLeaderName() 
    {
        return leaderName;
    }

    public void setLeaderGrade(String leaderGrade) 
    {
        this.leaderGrade = leaderGrade;
    }

    public String getLeaderGrade() 
    {
        return leaderGrade;
    }

    public void setCreatedDate(Date createdDate) 
    {
        this.createdDate = createdDate;
    }

    public Date getCreatedDate() 
    {
        return createdDate;
    }

    public void setUpdatedDate(Date updatedDate) 
    {
        this.updatedDate = updatedDate;
    }

    public Date getUpdatedDate() 
    {
        return updatedDate;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("awardInfoId", getAwardInfoId())
            .append("workName", getWorkName())
            .append("leaderName", getLeaderName())
            .append("leaderGrade", getLeaderGrade())
            .append("createdDate", getCreatedDate())
            .append("updatedDate", getUpdatedDate())
            .toString();
    }

    public List<CompetitionAwardTeamMembers> getTeamMembers() {
        return teamMembers;
    }

    public void setTeamMembers(List<CompetitionAwardTeamMembers> teamMembers) {
        this.teamMembers = teamMembers;
    }

    public List<CompetitionAwardTeacher> getTeachers() {
        return teachers;
    }

    public void setTeachers(List<CompetitionAwardTeacher> teachers) {
        this.teachers = teachers;
    }
}
